package com.atdel.demo33;


/**
 * @BelongsProject: java_study
 * @BelongsPackage: com.atdel.demo32
 * @Author: Del
 * @CreateTime: 2025-03-30  17:00
 * @Description: 抽象动物类
 * @Version: 1.0
 */
public abstract class Animal {

    // 动物类，抽象了动物的基本属性和行为 动物的名称
    private String name;

    // 使用SleepStatus注解来标记睡眠状态字段 动物的睡眠状态
    @SleepStatus
    private SleepStatus.Status sleepStatus;

    // 使用HealthStatus注解来标记健康状态字段 动物的健康状态
    @HealthStatus
    private HealthStatus.Status healthStatus;

    // 构造方法，初始化动物的名称
    public Animal(String name) {
        this.name = name;
    }

    // 抽象方法，定义动物吃东西的行为，由子类具体实现
    public abstract void eat();

    // 抽象方法，定义动物睡觉的行为，由子类具体实现
    public abstract void sleep();

    // 获取动物的名称
    public String getName() {
        return name;
    }

    // 获取动物的睡眠状态
    public SleepStatus.Status getSleepStatus() {
        return sleepStatus;
    }

    // 设置动物的睡眠状态
    public void setSleepStatus(SleepStatus.Status sleepStatus) {
        this.sleepStatus = sleepStatus;
    }

    // 获取动物的健康状态
    public HealthStatus.Status getHealthStatus() {
        return healthStatus;
    }

    // 设置动物的健康状态
    public void setHealthStatus(HealthStatus.Status healthStatus) {
        this.healthStatus = healthStatus;
    }
}
